﻿//
// GrepEngine
//
// Copyright (C) 2011 - Tatsuya Niioka
//
using System.IO;
using System.Runtime.Serialization.Formatters.Soap;

namespace GrepEngine
{
    /// <summary>
    /// Grep定義ファイルクラス
    /// </summary>
    public sealed class GrepFile
    {
        #region Load
        /// <summary>
        /// 指定した入力ファイルからコンフィグレーションクラスを取得します。
        /// </summary>
        /// <param name="inputFile">入力ファイル</param>
        /// <returns>コンフィグレーションクラス</returns>
        public static GrepInfo Load(string inputFile)
        {
            var formatter = new SoapFormatter();
            using (var fs = new FileStream(inputFile, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                return (GrepInfo)formatter.Deserialize(fs);
            }
        }
        #endregion

        #region Save
        /// <summary>
        /// 指定したコンフィグレーションクラスを出力ファイルに出力します。
        /// </summary>
        /// <param name="config">コンフィグレーションクラス</param>
        /// <param name="outputFile">出力ファイル</param>
        public static void Save(GrepInfo config, string outputFile)
        {
            var formatter = new SoapFormatter();
            using (var fs = new FileStream(outputFile, FileMode.Create, FileAccess.Write, FileShare.Write))
            {
                formatter.Serialize(fs, config);
            }
        }
        #endregion
    }
}
